from ecelery import easy_shared_task
from celery import shared_task

"""
easy_shared_task 和 shared_task 是一样的，只是easy_shared_task把参数都暴露出来了，拥有超强的函数参数补全优势。
shared_task比 @app.task优势 是无需提前导入一个app，以防止互相导入的问题而采用非常不友好的includes配置字符串方式来延迟导入来解决互相导入。

celery app实例化对象所在模块可以导入 add函数，不会发生相互导入，因为此函数任务模块没有导入celery app实例。
"""


# name 随便起个什么名字，但要保证唯一，如果不传name，那么会自动使用函数名作为name，那用户要保证函数名是唯一的。
@easy_shared_task(name='add_task2', rate_limit='0.5/s')  # easy_shared_task超强的函数补全优势，可以在pycharm下带出来20种控制参数，不会打错字母导致控制没生效。
def add(x, y):
    print(f'{x} +  {y} = {x + y}')
    return x + y
